<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use app\admin\model\Goods;
use app\admin\controller\Goods as GoodsModel;   //如果名空间重命【model和controller重名】，则需要重命名

class Test extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //手动实例化模型
        //$model = new Goods();   //引用命名空间
        //$model = new \app\admin\model\Goods();    //直接调用
        //$model = new GoodsModel;    //引用命名空间

        //查询多条数据,打开的表对应controller控制器的名称
        //$data = \app\admin\model\Goods::all();  //select和all一样，推荐用select
        $data = \app\admin\model\Goods::select();
        //$data = \app\admin\model\Goods::select('32, 33, 34');
        //$data = \app\admin\model\Goods::select('32, 33, 34');   //查询id为32，33，34的数据
        //$data = \app\admin\model\Goods::select([32, 33, 34]);   //查询id为32，33，34的数据
        //dump($data);  //原始的表单数据
        /*
         foreach($data as $v)
        {
            //输出商品的名称 goods_name
            //dump($v->goods_name); //外层是数组里面是对象
            dump($v['goods_name']); //可以当做数组调用，相当于二维数组
        }
        */
        //返回结果 外层是数组，里面是对象
        //为了打印查看数据方便，可以将返回的结果转化为标准的二维数组【将格式设置为标准的二维数组】
        //1.foreach
        foreach($data as &$v)
        {
            $v = $v->toArray();
        }
        unset($v);  //$v没有用了对起进行销毁
        /*//上述foreach和下述的foreach效果一样
         foreach($data as $k => $v)
        {
            $data[$k] = $v;
        }*/
        dump($data);die;
        //2.集合对象 \think\Collection
        $data = (new \think\Collection($data))->toArray();
        dump($data);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //url生成
        dump(url('admin/test/index'));
        dump(url('admin/test/read', ['id=> 10, age=>20']));
        dump(url('admin/test/read', ['id=> 10, age=>20'], false));
        dump(url('admin/test/read', ['id=> 10, age=>20'], true,true));
        //输出
        /*
        string(22) "/admin/test/index.html"
        string(50) "/admin/test/read/0/id%3D%3E+10%2C+age%3D%3E20.html"
        string(45) "/admin/test/read/0/id%3D%3E+10%2C+age%3D%3E20"
        string(71) "http://www.tpshop.com/admin/test/read/0/id%3D%3E+10%2C+age%3D%3E20.html"
        */
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //查询一条数据
//        $goods = \app\admin\model\Goods::find(32);
//        $goods = \app\admin\mode\Godds::get(33);
//        dump($goods);   //直接输出表单数据（杂乱）这里输出的是对象
//        dump($goods->toArray());    //整理数据
//        dump($goods['goods_price']);    //只输出单价
        //如果转化为数组，只能使用数组语法
//        $goods = $goods->toArray();
//        dump($goods);
//        dump($goods['goods_name']); die;
//        dump($goods->goods.price);  //error：Trying to get property of non-object（尝试获取一条属性在一个不是对象的上面）【说明->不是对象获取数据的方法】

        //注意：使用where方法后，只能调用find   select方法，不能使用get   all方法
        //$goods = \app\admin\model\Goods::where('id', '=', 33)->find();
        //$goods = \app\admin\model\Goods::where('id', '=', 33)->get();   //error：method not exist:think\db\Query->get
//        $goods = \app\admin\model\Goods::get(36);   //get正确使用
//        dump($goods->toArray());

        //连表查询语句
        //SELECT t1.*, t2.username FROM 'tpshop_address' as t1 left join tpshop_user as t2 on t1.user_id = t2.id where t1.id < 10;  //数据库中的操作
        //php操作
        /*
        $data = \app\admin\model\Address::alias('t1')
            ->join('tpshop_user t2', 't1.user_id = t2.id', 'left')
            ->where ('t1.id', '<', 10)
            ->field('t1.*, t2.username')
            ->select();
        dump($data);die;
        */
        //统计查询
//        $count = \app\admin\model\Goods::where('id', '>=', 34)->count(); //统计id>34的个数
//        dump($count);
        //字段值查询
        $goods_name = \app\admin\model\Goods::where('id', '=', 35)->value('goods_name');    //传递商品名称
        dump($goods_name);

        $goods_names = \app\admin\model\Goods::where('id', '>', 35)->column('goods_name', 'id');    //传递多个商品名称 ,column将多个数据合并成数组 , id作为新的下标
        dump($goods_names);
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }

    //二十一. 删除操作
    public function shanchu()
    {
        //1.查询并删除（调用模型的delete方法）
        /*
        $goods = \app\admin\model\Goods::find(135);
        if(empty($goods)) {
            echo '数据已经不存在了'; die;
        }
        $res = $goods->delete();
        dump($res);
        */
        //2.调用where方法，再调用Query类的delete方法删除
        /*
        $goods = \app\admin\model\Goods::where('id', '=', 138);
        $res = $goods->delete();
        if($res) {
            echo '数据已经不存在了'; die;
        }
        else {
            echo '数据删除失败'; die;
        }
        */
        //3.静态调用destroy方法删除（推荐使用）
        $res = \app\admin\model\Goods::destroy(139);
        \app\admin\model\Goods::destroy('1,2,3');   //批量刪除id=1，2，3的數據
        \app\admin\model\Goods::destroy([1,2,3]);   //批量刪除id=1，2，3的數據
        \app\admin\model\Goods::destroy(['status'=>1]); //刪除指定数据
        if($res) {
            echo '数据成功刪除'; die;
        }
        else {
            echo '数据删除失败'; die;
        }
    }

    //增加商品
    public function addgoods()
    {
        //添加数据
        //save方法
        /*
        $goods_model = new \app\admin\model\Goods();
        $goods_model->goods_name = 'huawei';
        $goods_model->goods_price = '3999';
        $goods_model->save();
        dump($goods_model->id);
        */

        //静态create方法
        /*
        $data = ['goods_name' => 'xiaomi', 'goods_price'=>1999];
        $goods = \app\admin\model\Goods::create($data);
        dump($goods->id);
        */

        //批量添加
        //保存数据到数据库
        /*
        $goods_model = new \app\admin\model\Goods();
        $data = [
            ['goods_name' => 'xiaomi1', 'goods_price' => '1799'],
            ['goods_name' => 'xiaomi2s', 'goods_price' => '2799'],
        ];
        $res = $goods_model->saveAll($data);
        dump($res);die;
        */
    }
}
